const recordBtn = document.querySelector(".record-btn")
const player = document.querySelector(".audio-player")
// const download = document.querySelector('#download')
function getLastSegment(url) {
    // 使用URL API来解析URL
    const urlObj = new URL(url);
    // 获取路径部分并去除开头的斜杠（如果有）
    const path = urlObj.pathname.replace(/^\//, '');
    // 分割路径并返回最后一段
    return path.split('/').pop();
}
function areLastSegmentsEqual(url1, url2) {
    // 获取两个URL的最后一段
    const segment1 = getLastSegment(url1);
    const segment2 = getLastSegment(url2);
    // 比较它们是否相同
    return segment1 === segment2;
}

if (navigator.mediaDevices.getUserMedia) {
    let audioChunks = []
    // 约束属性
    const constraints = {
        // 音频约束
        audio: {
            sampleRate: 16000, // 采样率
            sampleSize: 16, // 每个采样点大小的位数
            channelCount: 1, // 通道数
            volume: 1, // 从 0（静音）到 1（最大音量）取值，被用作每个样本值的乘数
            echoCancellation: true, // 开启回音消除
            noiseSuppression: true, // 开启降噪功能
        },
        // 视频约束
        video: false
    }
    // 请求获取音频流
    navigator.mediaDevices.getUserMedia(constraints)
        .catch(err => serverLog("ERROR mediaDevices.getUserMedia: ${err}"))
        .then(stream => {// 在此处理音频流
            // 创建 MediaRecorder 实例
            const mediaRecorder = new MediaRecorder(stream)
            // 点击按钮
            recordBtn.onclick = () => {
                if (mediaRecorder.state === "recording") {
                    // 录制完成后停止
                    mediaRecorder.stop()
                    recordBtn.textContent = "录音结束"
                }
                else {
                    // 开始录制
                    mediaRecorder.start()
                    recordBtn.textContent = "录音中..."
                }
            }
            mediaRecorder.ondataavailable = e => {
                audioChunks.push(e.data)
            }
            // 结束事件
            mediaRecorder.onstop = e => {
                // 将录制的数据组装成 Blob（binary large object） 对象（一个不可修改的存储二进制数据的容器）
                const blob = new Blob(audioChunks, { type: "audio/webm" })
                audioChunks = []
                const audioURL = window.URL.createObjectURL(blob)
                // 赋值给一个 <audio> 元素的 src 属性进行播放
                player.src = audioURL
                // // 添加下载功能
                // download.innerHTML = '下载'
                // download.href = audioURL
                // 将文件回传
                // 准备 FormData 对象用于文件上传
                const formData = new FormData();
                // 添加 Blob 到 FormData，并为其指定一个名称（这里假设服务器期望的字段名为 'audioFile'）
                formData.append('audioFile', blob, 'recording.webm'); // 'recording.webm' 是文件的建议名称，不是必须
                // 使用 fetch API 发送文件到服务器
                fetch('/upload-url', { // 请替换为您的上传 URL
                    method: 'POST',
                    body: formData
                })
                .then(response => {
                    if (!response.ok) {
                        throw new Error('Network response was not ok');
                    }
                    return response.text(); // 或者返回 response.json() 如果服务器返回 JSON
                })
                .then(data => {
                    console.log('Upload successful:', data);
                    let textarea = document.getElementById('inputQuestion');
                    textarea.readOnly = true;
                        setTimeout(function() {
                                window.location.reload();
                            }, 1000); // 等待 1 秒后刷新页面
                    })
                    // setInterval(function () {
                    //     const currentUrl = window.location.href;
                    //     alert(currentUrl)
                    // }, 2000); // 每秒/1000检查一次
                    // })
                .catch(error => {
                    console.error('There has been a problem with your fetch operation:', error);
                });
            }
        },
            () => {
                console.error("授权失败！");
            }
        );
} else {
    console.error("该浏览器不支持 getUserMedia！");
}